(*

IEView Plugin for Miranda IM
Copyright (C) 2005  Piotr Piastucki

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

*)

{$IFNDEF M_IEVIEW}
{$DEFINE M_IEVIEW}

const

  MS_IEVIEW_WINDOW    = 'IEVIEW/NewWindow';
  MS_IEVIEW_EVENT     = 'IEVIEW/Event';
  MS_IEVIEW_NAVIGATE  = 'IEVIEW/Navigate';

  ME_IEVIEW_OPTIONSCHANGED = 'IEVIEW/OptionsChanged';

//* IEView window commands */
  IEW_CREATE          = 1;          // create new window (control)
  IEW_DESTROY         = 2;          // destroy control
  IEW_SETPOS          = 3;          // set window position and size
  IEW_SCROLLBOTTOM    = 4;          // scroll text to bottom

//* IEView window type/mode */
  IEWM_TABSRMM        = 1;          // TabSRMM-compatible HTML builder
  IEWM_SCRIVER        = 3;          // Scriver-compatible HTML builder
  IEWM_MUCC           = 4;          // MUCC group chats GUI
  IEWM_CHAT           = 5;          // chat.dll group chats GUI
  IEWM_HISTORY        = 6;          // history viewer
  IEWM_BROWSER        = 256;        // empty browser window

type

  PIEVIEWWINDOW = ^IEVIEWWINDOW;
  IEVIEWWINDOW = packed record
    cbSize: Integer;                // size of the strusture
    iType: Integer;                 // one of IEW_* values
    dwMode: DWord;                  // compatibility mode - one of IEWM_* values
    dwFlags: DWord;                 // flags, one of IEWF_* values
    Parent: HWND;                   // parent window HWND
    Hwnd: HWND;                     // IEW_CREATE returns WebBrowser control's HWND here
    x: Integer;                     // IE control horizontal position
    y: Integer;                     // IE control vertical position
    cx: Integer;                    // IE control horizontal size
    cy: Integer;                    // IE control vertical size
  end;

const

  IEEDF_UNICODE       = 1;          // if set pszText is a pointer to wchar_t string instead of char string
  IEEDF_UNICODE_TEXT  = 1;          // if set pszText is a pointer to wchar_t string instead of char string
  IEEDF_UNICODE_NICK  = 2;          // if set pszNick is a pointer to wchar_t string instead of char string
  IEEDF_UNICODE_TEXT2 = 4;          // if set pszText2 is a pointer to wchar_t string instead of char string
                                    //* The following flags are valid only for message events (IEED_EVENT_MESSAGE) */
  IEEDF_FORMAT_FONT   = $00000100;  // if set pszFont (font name) is valid and should be used
  IEEDF_FORMAT_SIZE   = $00000200;  // if set fontSize is valid and should be used
  IEEDF_FORMAT_COLOR  = $00000400;  // if set color is valid and should be used
  IEEDF_FORMAT_STYLE  = $00000800;  // if set fontSize is valid and should be used

  IEEDF_READ          = $00001000;  // if set
  IEEDF_SENT          = $00002000;  // if set
  IEEDF_RTL           = $00004000;  // if set

  IEED_EVENT_MESSAGE      = $0001;  // message
  IEED_EVENT_STATUSCHANGE = $0002;  // status change
  IEED_EVENT_FILE         = $0003;  // file
  IEED_EVENT_URL          = $0004;  // url
  IEED_EVENT_ERRMSG       = $0005;  // error message
  IEED_EVENT_SYSTEM       = $0006;  // system event

  IEED_MUCC_EVENT_MESSAGE = $0001;  // message
  IEED_MUCC_EVENT_TOPIC   = $0002;  // topic change
  IEED_MUCC_EVENT_JOINED  = $0003;  // user joined
  IEED_MUCC_EVENT_LEFT    = $0004;  // user left
  IEED_MUCC_EVENT_ERROR   = $0005;  // error

  IEED_GC_EVENT_HIGHLIGHT    = $8000;
  IEED_GC_EVENT_MESSAGE      = $0001;
  IEED_GC_EVENT_TOPIC        = $0002;
  IEED_GC_EVENT_JOIN         = $0003;
  IEED_GC_EVENT_PART         = $0004;
  IEED_GC_EVENT_QUIT         = $0006;
  IEED_GC_EVENT_NICK         = $0007;
  IEED_GC_EVENT_ACTION       = $0008;
  IEED_GC_EVENT_KICK         = $0009;
  IEED_GC_EVENT_NOTICE       = $000A;
  IEED_GC_EVENT_INFORMATION  = $000B;
  IEED_GC_EVENT_ADDSTATUS    = $000C;
  IEED_GC_EVENT_REMOVESTATUS = $000D;

  IE_FONT_BOLD      = $000100;      // Bold font flag
  IE_FONT_ITALIC    = $000200;      // Italic font flag
  IE_FONT_UNDERLINE = $000400;      // Underlined font flags

type

  PIEVIEWEVENTDATA = ^IEVIEWEVENTDATA;
  IEVIEWEVENTDATA = packed record
    cbSize: Integer;                //
    iType: Integer;                 // Event type, one of MUCC_EVENT_* values
    dwFlags: DWord;                 // Event flags - IEEDF_*
    fontName: PChar;                // Text font name
    fontSize: Integer;              // Text font size (in pixels)
    fontStyle: Integer;             // Text font style (combination of IE_FONT_* flags)
    color: COLORREF;                // Text color
    pszNick: TChar;                 // Nick, usage depends on type of event Ansi/Unicode
    pszText: TChar;                 // Text, usage depends on type of event Ansi/Unicode
    dwData: DWord;                  // DWORD data e.g. status
    bIsMe: BOOL;                    // TRUE if the event is related to the user
    time: DWord;                    // Time of the event
    next: PIEVIEWEVENTDATA;
    pszText2: TChar;                // Text, usage depends on type of event Ansi/Unicode
  end;

const

//* IEView events */
  IEE_LOG_DB_EVENTS     = 1;        // log specified number of DB events
  IEE_CLEAR_LOG         = 2;        // clear log
  IEE_GET_SELECTION     = 3;        // get selected text
  IEE_SAVE_DOCUMENT     = 4;        // save current document
  IEE_LOG_MEM_EVENTS    = 5;        // log specified number of IEView events

//* IEView event flags */
  IEEF_RTL              = 1;        // turn on RTL support
  IEEF_NO_UNICODE       = 2;        // disable Unicode support
  IEEF_NO_SCROLLING     = 4;        // do not scroll logs to bottom

  IEVIEWEVENT_SIZE_V1   = 28;
  IEVIEWEVENT_SIZE_V2   = 32;
  IEVIEWEVENT_SIZE_V3   = 36;

type

  _IEVIEWEVENTVARIANT = record
    case boolean of
      false: (hDBEventFirst: THandle);      // first event to log, when IEE_LOG_EVENTS returns it will contain
                                            // the last event actually logged or NULL if no event was logged (IEE_LOG_EVENTS)
      true:  (eventData: PIEVIEWEVENTDATA);
  end;
  PIEVIEWEVENT = ^IEVIEWEVENT;
  IEVIEWEVENT = packed record
    cbSize: Integer;                // size of the strusture
    iType: Integer;                 // one of IEE_* values
    dwFlags: DWord;                 // one of IEEF_* values
    Hwnd: HWND;                     // HWND returned by IEW_CREATE
    hContact: THandle;              // contact
    data: _IEVIEWEVENTVARIANT;
    Count: Integer;                 // number of events to log
    Codepage: Cardinal;             // ANSI codepage
    pszProto: PChar;                // Name of the protocol
  end;

  PIEVIEWSHOWSMILEYSEL = ^IEVIEWSHOWSMILEYSEL;
  IEVIEWSHOWSMILEYSEL = packed record
    cbSize: Integer;                //size of the structure
   Protocolname: PChar;            //protocol to use... if you have defined a protocol, u can
                                    //use your own protocol name. Smiley add wil automatically
                                    //select the smileypack that is defined for your protocol.
                                    //Or, use "Standard" for standard smiley set. Or "ICQ", "MSN"
                                    //if you prefer those icons.
                                    //If not found or NULL: "Standard" will be used
   xPosition: integer;             //Postition to place the selectwindow
   yPosition: integer;             // "
   Direction: integer;             //Direction (i.e. size upwards/downwards/etc) of the window 0, 1, 2, 3
   hwndTarget: HWND;               //Window, where to send the message when smiley is selected.
   targetMessage: Cardinal;        //Target message, to be sent.
   targetWParam: WPARAM;           //Target WParam to be sent (LParam will be char* to select smiley)
                                    //see the example file.
  end;

const

  IEN_NAVIGATE          = 1;        // navigate to the given destination
  IENF_UNICODE         = 1;        // if set urlW is used instead of urlW

type

  PIEVIEWNAVIGATE = ^IEVIEWNAVIGATE;
  IEVIEWNAVIGATE = packed record
    cbSize: Integer;                //size of the structure
    iType: Integer;                 // one of IEE_* values
    dwFlags: DWord;                 // one of IEEF_* values
    Hwnd: HWND;                     // HWND returned by IEW_CREATE
    url: TChar;                     // Text, usage depends on type of event Ansi/Unicode
  end;

{$ENDIF}

